Introduction to graphing with Plotly

library(tidyverse)
library(plotly)
library(palmerpenguins)

Basic Scatter Plot

Comparing Body Mass vs. Flipper length in Penguins

fig <- penguins %>%
  plot_ly( x = ~body_mass_g, y = ~flipper_length_mm, type="scatter", color = ~species) %>%
  layout(
    title = "Body Mass vs. Flipper Length",
    xaxis = list(title="Body Mass"),
    yaxis = list(title="Flipper Length")
  )
fig

Basic Histogram in ggplot

ggplot(data=penguins, aes(x = body_mass_g)) + geom_histogram()

Basic Histogram in Plotly

fig <- penguins %>%
  plot_ly( x = ~body_mass_g, type="histogram", color = ~body_mass_g, colors=c(rgb(.8,0,0)), opacity=.5) %>% 
  layout(
    title = "Body Mass"
  )
fig

Bar Charts

fig <- plot_ly(diamonds, x = ~cut, color=~clarity, colors = "Greens", stroke = I("black"))
fig

Overlaying Histograms

a <- penguins %>% filter(species=="Gentoo") %>% select(body_mass_g)
b <- penguins %>% filter(species=="Adelie") %>% select(body_mass_g)
c <- penguins %>% filter(species=="Chinstrap") %>% select(body_mass_g)
fig <- plot_ly(opacity=.6, stroke = I("black")) %>%
  add_histogram(data = a, x=~body_mass_g, name="Gentoo") %>%
  add_histogram(data = b, x=~body_mass_g, name="Adelie") %>%
  add_histogram(data = c, x=~body_mass_g, name="Chinstrap")
fig <- fig %>% layout(barmode="overlay", title="Penguin Body Mass by Species",
                      xaxis=list(title="Body Mass"),
                      yaxis=list(title="Frequency"),
                      plot_bgcolor = "#c7daec",
                      showlegend = TRUE)
fig

Creating a Bar Chart of the average body mass of penguin species

penguin_stats <- penguins %>% 
  group_by(species) %>% 
  drop_na() %>%
  summarise(
    min_body_mass = min(body_mass_g),
    avg_body_mass = mean(body_mass_g),
    max_body_mass = max(body_mass_g))
fig <- penguin_stats %>% plot_ly( x = ~species, y = ~avg_body_mass, color = ~species) %>%
  add_bars() %>%
  layout(title="Average Body Mass",
         xaxis=list(title="Species"),
         yaxis=list(title="Body Mass in Grams"),
         barmode="stack")
fig

Adelie and Chinstraps are about the same size, and Gentoo’s are about 27% bigger.

3D Topographical Map

x <- seq_len(nrow(volcano)) + 100
y <- seq_len(ncol(volcano)) + 500
plot_ly() %>% add_surface( x = ~x, y = ~y, z=~volcano)